<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    div {
        position: absolute;
        left: 0;
        width: 100px;
        height: 100px;
        background-color: pink;
    }

    span {
        position: absolute;
        left: 0;
        top: 200px;
        display: block;
        width: 150px;
        height: 150px;
        background-color: purple;
    }
</style>

<body>
    <div></div>
   
    <script>

        // 获得盒子当前位置
        // 让盒子在当前位置加上1移动距离
        // obj.offsetLeft + 1获取位置之后必须重新赋值给元素
        // 当盒子到达一定位置不能再移动，清除定时器即可
        // 注意：这里的元素必须定位才能移动

        function animate(obj, target) {

            // 2. 让盒子在当前位置加上1个移动距离
            clearInterval(obj.timer);
            // 3. 利用定时器不断重复这个操作
            obj.timer = setInterval(function () {
                if (obj.offsetLeft >= target) {
                    clearInterval(obj.timer);

                } else {
                    obj.style.left = obj.offsetLeft + 10 + 'px';
                }
            }, 30)
        }
        var div = document.querySelector('div');

        animate(div, 400);
    </script>
</body>

</html>